﻿using QuanLyThuVien.BLL;
using QuanLyThuVien.DTO;
using QuanLyThuVien.Supporter;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace QuanLyThuVien.GUI
{
    public partial class GUIQuanLyThuVien : DevComponents.DotNetBar.Office2007RibbonForm
    {
        //----------------------------------------------------------------------
        //Desc: constructor
        //----------------------------------------------------------------------
        public GUIQuanLyThuVien()
        {
            InitializeComponent();
        }

        #region HETHONG

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện đóng form đăng nhập
        //----------------------------------------------------------------------
        void GUIDangNhap_FormClosed(object sender, FormClosedEventArgs e)
        {
            PhanQuyen();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button Đăng Nhập
        //----------------------------------------------------------------------
        private void rbtnDangNhap_Click(object sender, EventArgs e)
        {
            GUIDangNhap guidangnhap = new GUIDangNhap();
            guidangnhap.FormClosed += GUIDangNhap_FormClosed;
            guidangnhap.Show();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button KetNoiCSDL
        //----------------------------------------------------------------------
        private void rbtnKetNoiCsdl_Click(object sender, EventArgs e)
        {
            new GUIKetNoiCSDL().Show();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click butotn Thoat
        //----------------------------------------------------------------------
        private void rbtnThoat_Click(object sender, EventArgs e)
        {
            DialogResult result = MessageBox.Show("Bạn có muốn thoát phần mềm?", "THÔNG BÁO", MessageBoxButtons.OKCancel);
            if (result == System.Windows.Forms.DialogResult.OK)
                this.Close();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button DangXuat
        //----------------------------------------------------------------------
        private void rbtnDangXuat_Click(object sender, EventArgs e)
        {

            if (UserManager.User == null)
                MessageBox.Show("Bạn chưa đăng nhập");
            else
            {
                DialogResult result = MessageBox.Show("Thoát tài khoản?", "THÔNG BÁO", MessageBoxButtons.OKCancel);
                if (result == System.Windows.Forms.DialogResult.OK)
                {
                    UserManager.User = null;
                    PhanQuyen();
                }
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button TaoTaiKhoan 
        //----------------------------------------------------------------------
        private void rbtnTaoTaiKhoan_Click(object sender, EventArgs e)
        {
            if (UserManager.User != null && (UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.ThuThu
                || UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.NguoiQuanTri))
                new GUITaoTaiKhoan().Show();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button DoiMatKhau
        //----------------------------------------------------------------------
        private void rbtnDoiMatKhau_Click(object sender, EventArgs e)
        {
            new GUIDoiMatKhau().Show();
        }


        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button XuLyDuLieu
        //----------------------------------------------------------------------
        private void rbtnSaoLuu_Click(object sender, EventArgs e)
        {
            new GUIXuLyDuLieu().Show();
        }

        #endregion

        #region DOCGIA

        //----------------------------------------------------------------------
        //Desc: hiển thị thông tin độc giả
        //----------------------------------------------------------------------
        private void HienThiThongTinDG()
        {
            if (_dgwDocGia.CurrentRow != null && UserManager.User != null)
            {
                string madg = "";
                try
                {
                    madg = (string)_dgwDocGia.Rows[_dgwDocGia.CurrentRow.Index].Cells[0].Value;
                }
                catch { }
                if (madg != "")
                {
                    BLLDocGia _bllDocGia = new BLLDocGia();
                    DTODocGia docgia = _bllDocGia.LayThongTinDG(madg);
                    if (docgia == null)
                        MessageBox.Show("Không lấy được thông tin độc giả");
                    else
                    {
                        switch (UserManager.User.LoaiNguoiDung)
                        {
                            case LOAI_NGUOI_DUNG.NguoiQuanTri:
                                new GUIDocGia(THAOTAC.SUA, docgia).Show();
                                break;
                            case LOAI_NGUOI_DUNG.ThuThu:
                                new GUIDocGia(THAOTAC.SUA, docgia).Show();
                                break;
                            case LOAI_NGUOI_DUNG.DocGia:
                                new GUIDocGia(THAOTAC.XEM, docgia).Show();
                                break;
                        }

                    }
                }
            }
        }

        //----------------------------------------------------------------------
        //Desc: xóa độc giả
        //----------------------------------------------------------------------
        private void XoaDocGia()
        {
            if (_dgwDocGia.CurrentRow != null && UserManager.User != null)
            {
                string madg = "";
                try
                {
                    madg = (string)_dgwDocGia.Rows[_dgwDocGia.CurrentRow.Index].Cells[0].Value;
                }
                catch { }
                if (madg != "")
                {
                    BLLDocGia _bllDocGia = new BLLDocGia();
                    DTODocGia docgia = _bllDocGia.LayThongTinDG(madg);
                    if (docgia != null)
                    {
                        if (_bllDocGia.KiemTraTonTaiPhieuMuon(docgia.MaDG))
                            MessageBox.Show("Độc giả có thông tin trong phiếu mượn, không được xóa");
                        else
                        {
                            DialogResult result = MessageBox.Show("Nếu tiếp tục, sẽ xóa vĩnh viễn độc giả "
                                + docgia.MaDG, "CẢNH BÁO", MessageBoxButtons.OKCancel);
                            if (result == System.Windows.Forms.DialogResult.OK)
                            {
                                if (_bllDocGia.Xoa(docgia))
                                {
                                    MessageBox.Show("Xoá thành công");
                                    try
                                    {
                                        _dgwDocGia.Rows.Remove(_dgwDocGia.CurrentRow);
                                    }
                                    catch { }
                                }
                                else
                                    MessageBox.Show("Xóa thất bại");
                            }
                        }
                    }
                    else
                        MessageBox.Show("Độc giả không tồn tại");
                }
            }
        }


        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button LapTheDocGia
        //----------------------------------------------------------------------
        private void btnLapTheDG_Click(object sender, EventArgs e)
        {
            if (UserManager.User != null &&
                (UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.NguoiQuanTri
                || UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.ThuThu))
                new GUIDocGia(THAOTAC.THEM).Show();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button DSDocGia
        //----------------------------------------------------------------------
        private void rbtnDSDocGia_Click(object sender, EventArgs e)
        {
            if (UserManager.User != null)
            {
                BLLDocGia _bllDocGia = new BLLDocGia();
                DataTable data;
                if (UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.NguoiQuanTri
                    || UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.ThuThu)
                    data = _bllDocGia.LayDSDocGia();
                else
                    data = _bllDocGia.LayThongTinDocGia(UserManager.User.MaDG);

                if (data == null)
                    MessageBox.Show("Không lấy được danh sách độc giả");
                else
                {   
                    _dgwDocGia.DataSource = data;
                    _tabDocGia.Visible = true;
                    _tcpDocGia.Visible = true;
                    _tabContent.SelectedTab = _tabDocGia;
                    MessageBox.Show("Có " + data.Rows.Count.ToString() + " độc giả");
                }
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button DSDocGia
        //----------------------------------------------------------------------
        private void rbtnDSDocGiaHetHan_Click(object sender, EventArgs e)
        {
            if (UserManager.User != null &&
                (UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.NguoiQuanTri
                || UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.ThuThu))
            {
                BLLDocGia _bllDocGia = new BLLDocGia();
                DataTable data = _bllDocGia.LayDSDocGiaHetHan();
                if (data == null)
                    MessageBox.Show("Không lấy được danh sách độc giả");
                else
                {
                    _dgwDocGia.DataSource = data;
                    _tabDocGia.Visible = true;
                    _tcpDocGia.Visible = true;
                    _tabContent.SelectedTab = _tabDocGia;
                    MessageBox.Show("Có " + data.Rows.Count.ToString() + " độc giả");
                }
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button CapNhatDG
        //----------------------------------------------------------------------
        private void btnCapNhatDG_Click(object sender, EventArgs e)
        {
            HienThiThongTinDG();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button DongDG
        //----------------------------------------------------------------------
        private void btnDongDG_Click(object sender, EventArgs e)
        {
            try
            {
                _dgwDocGia.Rows.Clear();
            }
            catch { }
            _tabDocGia.Visible = false;
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button XoaDG
        //----------------------------------------------------------------------
        private void btnXoaDG_Click(object sender, EventArgs e)
        {
            XoaDocGia();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện double click cell độc giả
        //----------------------------------------------------------------------
        private void dgwDocGia_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            HienThiThongTinDG();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button SearchDG
        //----------------------------------------------------------------------
        private void btnSearchDG_Click(object sender, EventArgs e)
        {
            if (_txtSearchDG.TextBox.Text == "")
                MessageBox.Show("Chưa nhập thông tin tìm kiếm");
            else
            {
                string thongtin = _txtSearchDG.TextBox.Text;
                int ketqua = 0;
                for (int i = 0; i < _dgwDocGia.Rows.Count; i++)
                {
                    string tendocgia = "";
                    try
                    {
                        tendocgia = (string)_dgwDocGia.Rows[i].Cells[2].Value;
                    }
                    catch { }
                    if (tendocgia != "")
                    {
                        List<string> strs = Utils.SplitString(thongtin);
                        for (int j = 0; j < strs.Count; j++)
                        {
                            try
                            {
                                if (tendocgia.ToLower().Contains(strs[j]))
                                {
                                    ketqua++;
                                    _dgwDocGia.Rows[i].Selected = true;
                                }
                            }
                            catch { }
                        }
                    }
                }

                if (ketqua == 0)
                    MessageBox.Show("Không tìm thấy độc giả nào");
            }
        }

        //----------------------------------------------------------------------
        //Desc: chặn sự kiện xóa dòng
        //----------------------------------------------------------------------
        private void dgwDocGia_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
        {
            e.Cancel = true;
        }



        //----------------------------------------------------------------------
        //Desc: hiển thị thông tin loại độc giả
        //----------------------------------------------------------------------
        private void HienThiThongTinLoaiDG()
        {
            if (_dgwLoaiDG.CurrentRow != null && UserManager.User != null
                && (UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.NguoiQuanTri
                || UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.ThuThu))
            {
                string maloaidg = "";
                try
                {
                    maloaidg = (string)_dgwLoaiDG.Rows[_dgwLoaiDG.CurrentRow.Index].Cells[0].Value;
                }
                catch { }
                if (maloaidg != "")
                {
                    BLLLoaiDG _bllLoaiDG = new BLLLoaiDG();
                    DTOLoaiDG loaidg = _bllLoaiDG.LayThongTinLoaiDG(maloaidg);
                    if (loaidg == null)
                        MessageBox.Show("Không lấy được thông tin loại độc giả");
                    else
                        new GUILoaiDocGia(THAOTAC.SUA, loaidg).Show();
                }
            }
        }

        //----------------------------------------------------------------------
        //Desc: xóa loại độc giả
        //----------------------------------------------------------------------
        private void XoaLoaiDG()
        {
            if (_dgwLoaiDG.CurrentRow != null && UserManager.User != null
                && (UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.NguoiQuanTri
                || UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.ThuThu))
            {
                string maloaidg = "";
                try
                {
                    maloaidg = (string)_dgwLoaiDG.Rows[_dgwLoaiDG.CurrentRow.Index].Cells[0].Value;
                }
                catch { }
                if (maloaidg != "")
                {
                    BLLLoaiDG _bllLoaiDG = new BLLLoaiDG();
                    DTOLoaiDG loaidg = _bllLoaiDG.LayThongTinLoaiDG(maloaidg);
                    if (loaidg != null)
                    {
                        if (_bllLoaiDG.KiemTraTonTaiDG(loaidg.MaLoaiDG))
                            MessageBox.Show("Tồn tại độc giả có loại độc giả này, không được xóa");
                        else
                        {
                            DialogResult result = MessageBox.Show("Nếu tiếp tục, sẽ xóa vĩnh viễn loại độc giả "
                                + loaidg.MaLoaiDG, "CẢNH BÁO", MessageBoxButtons.OKCancel);
                            if (result == System.Windows.Forms.DialogResult.OK)
                            {
                                if (_bllLoaiDG.Xoa(loaidg))
                                {
                                    MessageBox.Show("Xoá thành công");
                                    try
                                    {
                                        _dgwLoaiDG.Rows.Remove(_dgwLoaiDG.CurrentRow);
                                    }
                                    catch { }
                                }
                                else
                                    MessageBox.Show("Xóa thất bại");
                            }
                        }
                    }
                    else
                        MessageBox.Show("Loại độc giả không tồn tại");
                }
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button ThemLoaiDG
        //----------------------------------------------------------------------
        private void btnThemLoaiDG_Click(object sender, EventArgs e)
        {
            if (UserManager.User != null &&
                (UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.NguoiQuanTri
                || UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.ThuThu))
                new GUILoaiDocGia(THAOTAC.THEM).Show();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button DSLoaiDG
        //----------------------------------------------------------------------
        private void btnDSLoaiDG_Click(object sender, EventArgs e)
        {
            if (UserManager.User != null &&
                (UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.NguoiQuanTri
                || UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.ThuThu))
            {
                BLLLoaiDG _bllLoaiDG = new BLLLoaiDG();
                DataTable data = _bllLoaiDG.LayDanhSachLoaiDocGia();
                if (data == null)
                    MessageBox.Show("Không lấy được danh sách loại độc giả");
                else
                {
                    _dgwLoaiDG.DataSource = data;
                    _tabLoaiDG.Visible = true;
                    _tcpLoaiDG.Visible = true;
                    _tabContent.SelectedTab = _tabLoaiDG;
                    MessageBox.Show("Có " + data.Rows.Count.ToString() + " loại đôc giả");
                }
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button DongLoaiDG
        //----------------------------------------------------------------------
        private void btnDongLoaiDG_Click(object sender, EventArgs e)
        {
            try
            {
                _dgwLoaiDG.Rows.Clear();
            }
            catch { }
            _tabLoaiDG.Visible = false;
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện double click cell loại độc giả
        //----------------------------------------------------------------------
        private void dgwLoaiDG_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            HienThiThongTinLoaiDG();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button CapNhatLoaiDG
        //----------------------------------------------------------------------
        private void btnCapNhatLoaiDG_Click(object sender, EventArgs e)
        {
            HienThiThongTinLoaiDG();
        }

        //----------------------------------------------------------------------
        //Desc: chặn sự kiện xóa dòng
        //----------------------------------------------------------------------
        private void dgwLoaiDG_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
        {
            e.Cancel = true;
        }

        //----------------------------------------------------------------------
        //Desc: sự kiện click button XoaLoaiDG
        //----------------------------------------------------------------------
        private void btnXoaLoaiDG_Click(object sender, EventArgs e)
        {
            XoaLoaiDG();
        }

        //----------------------------------------------------------------------
        //Desc: sự kiện click button SearchLoaiDG
        //----------------------------------------------------------------------
        private void btnSearchLoaiDG_Click(object sender, EventArgs e)
        {
            if (_txtSearchLoaiDG.TextBox.Text == "")
                MessageBox.Show("Chưa nhập thông tin tìm kiếm");
            else
            {
                string thongtin = _txtSearchLoaiDG.TextBox.Text;
                int ketqua = 0;
                for (int i = 0; i < _dgwLoaiDG.Rows.Count; i++)
                {
                    string maloaidg = "";
                    try
                    {
                        maloaidg = (string)_dgwLoaiDG.Rows[i].Cells[0].Value;
                    }
                    catch { }
                    if (maloaidg != "")
                    {
                        try
                        {
                            thongtin = Utils.ClearSpace(thongtin);
                            if (maloaidg.ToLower().Contains(thongtin.ToLower()))
                            {
                                ketqua++;
                                _dgwLoaiDG.Rows[i].Selected = true;
                            }
                        }
                        catch { }
                    }
                }

                if (ketqua == 0)
                    MessageBox.Show("Không tìm thấy mã loại độc giả");
                else
                    MessageBox.Show("Tìm thấy " + ketqua.ToString() + " loại độc giả");
            }
        }

        #endregion

        #region SACH

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button TraCuuSach
        //----------------------------------------------------------------------
        private void rbtnTraCuuSach_Click(object sender, EventArgs e)
        {
            new GUITraCuuSach().Show();
        }


        //----------------------------------------------------------------------
        //Desc: hiển thị thông tin sách
        //----------------------------------------------------------------------
        private void HienThiThongTinSach()
        {
            if (_dgwSach.CurrentRow != null)
            {
                string masach = "";
                try
                {
                    masach = (string)_dgwSach.Rows[_dgwSach.CurrentRow.Index].Cells[0].Value;
                }
                catch { }
                if (masach != null && masach != "")
                {
                    string madausach = masach.Substring(0, 3);
                    BLLDauSach _bllDauSach = new BLLDauSach();
                    DTODauSach dausach = _bllDauSach.LayDauSach(madausach);
                    if (dausach == null)
                        MessageBox.Show("Không lấy được thông tin sách");
                    else
                    {
                        BLLSach _bllSach = new BLLSach();
                        DTOSach sach = _bllSach.LaySach(masach);
                        if (sach == null)
                            MessageBox.Show("Không lấy được thông tin sách");
                        else
                        {
                            if (UserManager.User != null && (UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.NguoiQuanTri
                                || UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.ThuThu))
                                new GUISach(THAOTAC.SUA, dausach, sach).Show();
                            else
                                new GUISach(THAOTAC.XEM, dausach, sach).Show();
                        }
                    }
                }
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button NhapDauSach
        //----------------------------------------------------------------------
        private void tbnNhapDauSach_Click(object sender, EventArgs e)
        {
            if (UserManager.User != null &&
                (UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.NguoiQuanTri
                || UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.ThuThu))
                new GUIDauSach(THAOTAC.THEM).Show();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button Nhapach
        //----------------------------------------------------------------------
        private void btnNhapSach_Click(object sender, EventArgs e)
        {
            if (UserManager.User != null &&
                (UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.NguoiQuanTri
                || UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.ThuThu))
                new GUIPhieuNhap(THAOTAC.THEM).Show();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button DSSach
        //----------------------------------------------------------------------
        private void rbtnDSSach_Click(object sender, EventArgs e)
        {
            BLLSach _bllSach = new BLLSach();
            DataTable data = _bllSach.LayDSThongTinSach();
            if (data == null)
                MessageBox.Show("Không lấy được danh sách sách");
            else
            {
                _dgwSach.DataSource = data;
                _tabSach.Visible = true;
                _tcpSach.Visible = true;
                _tabContent.SelectedTab = _tabSach;
                MessageBox.Show("Có " + data.Rows.Count.ToString() + " sách");
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button DSSachMuon
        //----------------------------------------------------------------------
        private void rbtnDSSachMuon_Click(object sender, EventArgs e)
        {
            if (UserManager.User != null && UserManager.User != null
                && (UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.NguoiQuanTri
                || UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.ThuThu))
            {
                BLLSach _bllSach = new BLLSach();
                DataTable data = _bllSach.LayDSThongTinSachMuon();
                if (data == null)
                    MessageBox.Show("Không lấy được danh sách sách");
                else
                {
                    _dgwSach.DataSource = data;
                    _tabSach.Visible = true;
                    _tcpSach.Visible = true;
                    _tabContent.SelectedTab = _tabSach;
                    MessageBox.Show("Có " + data.Rows.Count.ToString() + " sách");
                }
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button DongSach
        //----------------------------------------------------------------------
        private void btnDongSach_Click(object sender, EventArgs e)
        {
            try
            {
                _dgwSach.Rows.Clear();
            }
            catch { }
            _tabSach.Visible = false;
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện double click cell Sach
        //----------------------------------------------------------------------
        private void dgwSach_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            HienThiThongTinSach();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button CapNhatSach
        //----------------------------------------------------------------------
        private void btnCapNhatSach_Click(object sender, EventArgs e)
        {
            HienThiThongTinSach();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button SearchSach
        //----------------------------------------------------------------------
        private void btnSearchSach_Click(object sender, EventArgs e)
        {
            if (_txtSearchSach.TextBox.Text == "")
                MessageBox.Show("Chưa nhập thông tin tìm kiếm");
            else
            {
                string thongtin = _txtSearchSach.TextBox.Text;
                int ketqua = 0;
                for (int i = 0; i < _dgwSach.Rows.Count; i++)
                {
                    string tendausach = "";
                    try
                    {
                        tendausach = (string)_dgwSach.Rows[i].Cells[1].Value;
                    }
                    catch { }
                    if (tendausach != "")
                    {
                        List<string> strs = Utils.SplitString(thongtin);
                        for (int j = 0; j < strs.Count; j++)
                        {
                            try
                            {
                                if (tendausach.ToLower().Contains(strs[j]))
                                {
                                    ketqua++;
                                    _dgwSach.Rows[i].Selected = true;
                                }
                            }
                            catch { }
                        }
                    }
                }

                if (ketqua == 0)
                    MessageBox.Show("Không tìm thấy sách nào");
            }
        }

        //----------------------------------------------------------------------
        //Desc: chặn sự kiện xóa dòng
        //----------------------------------------------------------------------
        private void dgwSach_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
        {
            e.Cancel = true;
        }



        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button ThemTG
        //----------------------------------------------------------------------
        private void btnThemTG_Click(object sender, EventArgs e)
        {
            if (UserManager.User != null &&
                (UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.NguoiQuanTri
                || UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.ThuThu))
                new GUITacGia(THAOTAC.THEM).Show();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button ThemTL
        //----------------------------------------------------------------------
        private void btnThemTL_Click(object sender, EventArgs e)
        {
            if (UserManager.User != null &&
                (UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.NguoiQuanTri
                || UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.ThuThu))
                new GUITheLoai(THAOTAC.THEM).Show();
        }


        //----------------------------------------------------------------------
        //Desc: Hiển thị thông tin thể loại
        //----------------------------------------------------------------------
        private void HienThiThongTinTL()
        {
            if (_dgwTheLoai.CurrentRow != null)
            {
                string matheloai = "";
                try
                {
                    matheloai = (string)_dgwTheLoai.Rows[_dgwTheLoai.CurrentRow.Index].Cells[0].Value;
                }
                catch { }
                if (matheloai != "")
                {
                    BLLTheLoai _bllTheLoai = new BLLTheLoai();
                    DTOTheLoai theloai = _bllTheLoai.LayThongTinTL(matheloai);
                    if (theloai == null)
                        MessageBox.Show("Không lấy được thông tin thể loại");
                    else
                        new GUITheLoai(THAOTAC.SUA, theloai).Show();
                }
            }
        }

        //----------------------------------------------------------------------
        //Desc: xóa thể loại
        //----------------------------------------------------------------------
        private void XoaTheLoai()
        {
            if (_dgwTheLoai.CurrentRow != null)
            {
                string matheloai = "";
                try
                {
                    matheloai = (string)_dgwTheLoai.Rows[_dgwTheLoai.CurrentRow.Index].Cells[0].Value;
                }
                catch { }
                if (matheloai != "")
                {
                    BLLTheLoai _bllTheLoai = new BLLTheLoai();
                    DTOTheLoai theloai = _bllTheLoai.LayThongTinTL(matheloai);
                    if (theloai != null)
                    {
                        if (_bllTheLoai.KiemTraTonTaiDauSach(theloai.MaTheLoai))
                            MessageBox.Show("Tồn tại đầu sách có thể loại này, không được xóa");
                        else
                        {
                            DialogResult result = MessageBox.Show("Nếu tiếp tục, sẽ xóa vĩnh viễn thể loại "
                                + theloai.MaTheLoai, "CẢNH BÁO", MessageBoxButtons.OKCancel);
                            if (result == System.Windows.Forms.DialogResult.OK)
                            {
                                if (_bllTheLoai.Xoa(theloai))
                                {
                                    MessageBox.Show("Xoá thành công");
                                    try
                                    {
                                        _dgwTheLoai.Rows.Remove(_dgwTheLoai.CurrentRow);
                                    }
                                    catch { }
                                }
                                else
                                    MessageBox.Show("Xóa thất bại");
                            }
                        }
                    }
                    else
                        MessageBox.Show("Không tồn tại thể loại");
                }
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button DSTheLoai
        //----------------------------------------------------------------------
        private void rbtnDSTheLoai_Click(object sender, EventArgs e)
        {
            BLLTheLoai _bllTheLoai = new BLLTheLoai();
            DataTable data = _bllTheLoai.LayDanhSachTheLoai();
            if (data == null)
                MessageBox.Show("Không lấy được danh sách thể loại");
            else
            {
                _dgwTheLoai.DataSource = data;
                _tabTheLoai.Visible = true;
                _tcpTheLoai.Visible = true;
                _tabContent.SelectedTab = _tabTheLoai;
                MessageBox.Show("Có " + data.Rows.Count.ToString() + " thể loại");
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện double click cell thể loại 
        //----------------------------------------------------------------------
        private void dgwTheLoai_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            HienThiThongTinTL();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button CapNhatTL
        //----------------------------------------------------------------------
        private void btnCapNhatTL_Click(object sender, EventArgs e)
        {
            HienThiThongTinTL();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button DongTL
        //----------------------------------------------------------------------
        private void btnDongTL_Click(object sender, EventArgs e)
        {
            try
            {
                _dgwTheLoai.Rows.Clear();
            }
            catch { }
            _tabTheLoai.Visible = false;
        }

        //----------------------------------------------------------------------
        //Desc: chặn sự kiện xóa dòng
        //----------------------------------------------------------------------
        private void dgwTheLoai_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
        {
            e.Cancel = true;
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện xóa thể loại
        //----------------------------------------------------------------------
        private void btnXoaTL_Click(object sender, EventArgs e)
        {
            XoaTheLoai();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện search tên thể loại
        //----------------------------------------------------------------------
        private void btnSearchTheLoai_Click(object sender, EventArgs e)
        {
            if (_txtSearchTheLoai.TextBox.Text == "")
                MessageBox.Show("Chưa nhập thông tin tìm kiếm");
            else
            {
                string thongtin = _txtSearchTheLoai.TextBox.Text;
                int ketqua = 0;
                for (int i = 0; i < _dgwTheLoai.Rows.Count; i++)
                {
                    string tentheloai = "";
                    try
                    {
                        tentheloai = (string)_dgwTheLoai.Rows[i].Cells[1].Value;
                    }
                    catch { }
                    if (tentheloai != "")
                    {
                        try
                        {

                            if (tentheloai.ToLower().IndexOf(thongtin.ToLower()) >= 0)
                            {
                                ketqua++;
                                _dgwTheLoai.Rows[i].Selected = true;
                            }
                        }
                        catch { }
                    }
                }

                if (ketqua == 0)
                    MessageBox.Show("Không tìm thấy thể loại nào");
                else
                    MessageBox.Show("Tìm thấy " + ketqua.ToString() + " thể loại");
            }
        }



        //----------------------------------------------------------------------
        //Desc: Hiển thị thông tin tác giả
        //----------------------------------------------------------------------
        private void HienThiThongTinTG()
        {
            if (_dgwTacGia.CurrentRow != null)
            {
                string matacgia = "";
                try
                {
                    matacgia = (string)_dgwTacGia.Rows[_dgwTacGia.CurrentRow.Index].Cells[0].Value;
                }
                catch { }
                if (matacgia != "")
                {
                    BLLTacGia _bllTacGia = new BLLTacGia();
                    DTOTacGia tacgia = _bllTacGia.LayThongTinTacGia(matacgia);
                    if (tacgia == null)
                        MessageBox.Show("Không lấy được thông tin tác giả");
                    else
                        new GUITacGia(THAOTAC.SUA, tacgia).Show();
                }
            }
        }

        //----------------------------------------------------------------------
        //Desc: xóa tác giả
        //----------------------------------------------------------------------
        private void XoaTacGia()
        {
            if (_dgwTacGia.CurrentRow != null)
            {
                string matacgia = "";
                try
                {
                    matacgia = (string)_dgwTacGia.Rows[_dgwTacGia.CurrentRow.Index].Cells[0].Value;
                }
                catch { }
                if (matacgia != "")
                {
                    BLLTacGia _bllTacGia = new BLLTacGia();
                    DTOTacGia tacgia = _bllTacGia.LayThongTinTacGia(matacgia);
                    if (tacgia != null)
                    {
                        if (_bllTacGia.KiemTraTonTaiDauSach(tacgia.MaTG))
                            MessageBox.Show("Tồn tại đầu sách của tác giả này, không được xóa");
                        else
                        {
                            DialogResult result = MessageBox.Show("Nếu tiếp tục, sẽ xóa vĩnh viễn tác giả "
                                + tacgia.MaTG, "CẢNH BÁO", MessageBoxButtons.OKCancel);
                            if (result == System.Windows.Forms.DialogResult.OK)
                            {
                                if (_bllTacGia.Xoa(tacgia))
                                {
                                    MessageBox.Show("Xoá thành công");
                                    try
                                    {
                                        _dgwTacGia.Rows.Remove(_dgwTacGia.CurrentRow);
                                    }
                                    catch { }
                                }
                                else
                                    MessageBox.Show("Xóa thất bại");
                            }
                        }
                    }
                    else
                        MessageBox.Show("Không tồn tại tác giả");
                }
            }
        }


        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button DSTacGia
        //----------------------------------------------------------------------
        private void rbtnDSTacGia_Click(object sender, EventArgs e)
        {
            BLLTacGia _bllTacGia = new BLLTacGia();
            DataTable data = _bllTacGia.LayDanhSachTacGia();
            if (data == null)
                MessageBox.Show("Không lấy được danh sách tác giả");
            else
            {
                _dgwTacGia.DataSource = data;
                _tabTacGia.Visible = true;
                _tcpTacGia.Visible = true;
                _tabContent.SelectedTab = _tabTacGia;
                MessageBox.Show("Có " + data.Rows.Count.ToString() + " tác giả");
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button CapNhatTG
        //----------------------------------------------------------------------
        private void btnCapNhatTG_Click(object sender, EventArgs e)
        {
            HienThiThongTinTG();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện double click cell tác giả 
        //----------------------------------------------------------------------
        private void dgwTacGia_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            HienThiThongTinTG();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button  DongDG
        //----------------------------------------------------------------------
        private void btnDongTG_Click(object sender, EventArgs e)
        {
            try
            {
                _dgwTacGia.Rows.Clear();
            }
            catch { }
            _tabTacGia.Visible = false;
        }

        //----------------------------------------------------------------------
        //Desc: chặn sự kiện xóa dòng
        //----------------------------------------------------------------------
        private void dgwTacGia_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
        {
            e.Cancel = true;
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện xóa tác giả
        //----------------------------------------------------------------------
        private void btnXoaTG_Click(object sender, EventArgs e)
        {
            XoaTacGia();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện search tên tác giả
        //----------------------------------------------------------------------
        private void btnSearchTacGia_Click(object sender, EventArgs e)
        {
            if (_txtSearchTG.TextBox.Text == "")
                MessageBox.Show("Chưa nhập thông tin tìm kiếm");
            else
            {
                string thongtin = _txtSearchTG.TextBox.Text;
                int ketqua = 0;
                for (int i = 0; i < _dgwTacGia.Rows.Count; i++)
                {
                    string tentacgia = "";
                    try
                    {
                        tentacgia = (string)_dgwTacGia.Rows[i].Cells[1].Value;
                    }
                    catch { }
                    if (tentacgia != "")
                    {
                        try
                        {
                            if (tentacgia.ToLower().IndexOf(thongtin.ToLower()) >= 0)
                            {
                                ketqua++;
                                _dgwTacGia.Rows[i].Selected = true;
                            }
                        }
                        catch { }
                    }
                }

                if (ketqua == 0)
                    MessageBox.Show("Không tìm thấy tác giả nào");
                else
                    MessageBox.Show("Tìm thấy " + ketqua.ToString() + " tác giả");
            }
        }



        //----------------------------------------------------------------------
        //Desc: Hiển thị thông tin phiếu nhập
        //----------------------------------------------------------------------
        public void HienThiThongTinPhieuNhap()
        {
            if (_dgwPhieuNhap.CurrentRow != null)
            {
                string maphieunhap = "";
                try
                {
                    maphieunhap = (string)_dgwPhieuNhap.Rows[_dgwPhieuNhap.CurrentRow.Index].Cells[0].Value;
                }
                catch { }
                if (maphieunhap != "")
                {
                    BLLPhieuNhap _bllPhieuNhap = new BLLPhieuNhap();
                    DTOPhieuNhap phieunhap = _bllPhieuNhap.LayPhieuNhap(maphieunhap);
                    if (phieunhap == null)
                        MessageBox.Show("Không lấy được thông tin phiếu nhập");
                    else
                        new GUIPhieuNhap(THAOTAC.XEM, phieunhap).Show();
                }
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button DSPhieuNhap
        //----------------------------------------------------------------------
        private void rbtnDSPhieuNhap_Click(object sender, EventArgs e)
        {
            BLLPhieuNhap _bllPhieuNhap = new BLLPhieuNhap();
            DataTable data = _bllPhieuNhap.LayDanhSachPhieuNhap();
            if (data == null)
                MessageBox.Show("Không lấy được danh sách phiếu nhập");
            else
            {
                _dgwPhieuNhap.DataSource = data;
                _tabPhieuNhap.Visible = true;
                _tcpPhieuNhap.Visible = true;
                _tabContent.SelectedTab = _tabPhieuNhap;
                MessageBox.Show("Có " + data.Rows.Count.ToString() + " phiếu nhập");
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button XemPhieuNhap
        //----------------------------------------------------------------------
        private void btnXemPhieuNhap_Click(object sender, EventArgs e)
        {
            HienThiThongTinPhieuNhap();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button DongPhieuNhap
        //----------------------------------------------------------------------
        private void btnDongPhieuNhap_Click(object sender, EventArgs e)
        {
            try
            {
                _dgwPhieuNhap.Rows.Clear();
            }
            catch { }
            _tabPhieuNhap.Visible = false;
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện double click cell phiếu nhập
        //----------------------------------------------------------------------
        private void dgwPhieuNhap_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            HienThiThongTinPhieuNhap();
        }

        //----------------------------------------------------------------------
        //Desc: chặn sự kiện xóa dòng
        //----------------------------------------------------------------------
        private void dgwPhieuNhap_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
        {
            e.Cancel = true;
        }

        #endregion

        #region MUON-TRA

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button LapPhieuMuon
        //----------------------------------------------------------------------
        private void btnLapPhieuMuon_Click(object sender, EventArgs e)
        {
            if (UserManager.User != null &&
                (UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.NguoiQuanTri
                || UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.ThuThu))
                new GUIPhieuMuon(THAOTAC.THEM).Show();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button LapPhieuTra
        //----------------------------------------------------------------------
        private void btnLapPhieuTra_Click(object sender, EventArgs e)
        {
            if (UserManager.User != null &&
                (UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.NguoiQuanTri
                || UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.ThuThu))
                new GUIPhieuTra(THAOTAC.THEM).Show();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button LapPhieuThu
        //----------------------------------------------------------------------
        private void btnLapPhieuThu_Click(object sender, EventArgs e)
        {
            if (UserManager.User != null &&
                (UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.NguoiQuanTri
                || UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.ThuThu))
                new GUIPhieuThu(THAOTAC.THEM).Show();
        }

        //----------------------------------------------------------------------
        //Desc: Hiển thị thông tin phiếu thu
        //----------------------------------------------------------------------
        public void HienThiThongTinPhieuThu()
        {
            if (_dgwPhieuThu.CurrentRow != null && UserManager.User != null)
            {
                string maphieuthu = "";
                try
                {
                    maphieuthu = (string)_dgwPhieuThu.Rows[_dgwPhieuThu.CurrentRow.Index].Cells[0].Value;
                }
                catch { }
                if (maphieuthu != "")
                {
                    BLLPhieuThu _bllPhieuThu = new BLLPhieuThu();
                    DTOPhieuThu phieuthu = _bllPhieuThu.LayPhieuThu(maphieuthu);
                    if (phieuthu == null)
                        MessageBox.Show("Không lấy được thông tin phiếu thu");
                    else
                        new GUIPhieuThu(THAOTAC.XEM, phieuthu).Show();
                }
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button DSPhieuThu
        //----------------------------------------------------------------------
        private void btnDSPhieuThu_Click(object sender, EventArgs e)
        {
            if (UserManager.User != null)
            {
                BLLPhieuThu _bllPhieuThu = new BLLPhieuThu();
                DataTable data;
                if (UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.NguoiQuanTri
                    || UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.ThuThu)
                    data = _bllPhieuThu.LayDanhSachPhieuThu();
                else
                    data = _bllPhieuThu.LayPhieuThuDocGia(UserManager.User.MaDG);
                if (data == null)
                    MessageBox.Show("Không lấy được danh sách phiếu thu");
                else
                {
                    _dgwPhieuThu.DataSource = data;
                    _tabPhieuThu.Visible = true;
                    _tcpPhieuThu.Visible = true;
                    _tabContent.SelectedTab = _tabPhieuThu;
                    MessageBox.Show("Có " + data.Rows.Count.ToString() + " phiếu thu");
                }
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button XemPhieuThu
        //----------------------------------------------------------------------
        private void btnXemPhieuThu_Click(object sender, EventArgs e)
        {
            HienThiThongTinPhieuThu();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button DongPhieuThu
        //----------------------------------------------------------------------
        private void btnDongPhieuThu_Click(object sender, EventArgs e)
        {
            try
            {
                _dgwPhieuThu.Rows.Clear();
            }
            catch { }
            _tabPhieuThu.Visible = false;
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện double click cell phiếu thu
        //----------------------------------------------------------------------
        private void dgwPhieuThu_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            HienThiThongTinPhieuThu();
        }

        //----------------------------------------------------------------------
        //Desc: chặn sự kiện xóa dòng
        //----------------------------------------------------------------------
        private void dgwPhieuThu_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
        {
            e.Cancel = true;
        }



        //----------------------------------------------------------------------
        //Desc: Hiển thị thông tin phiếu trả
        //----------------------------------------------------------------------
        public void HienThiThongTinPhieuTra()
        {
            if (_dgwPhieuTra.CurrentRow != null && UserManager.User != null)
            {
                string maphieutra = "";
                try
                {
                    maphieutra = (string)_dgwPhieuTra.Rows[_dgwPhieuTra.CurrentRow.Index].Cells[0].Value;
                }
                catch { }
                if (maphieutra != "")
                {
                    BLLPhieuTra _bllPhieuTra = new BLLPhieuTra();
                    DTOPhieuTra phieutra = _bllPhieuTra.LayPhieuTra(maphieutra);
                    if (phieutra == null)
                        MessageBox.Show("Không lấy được thông tin phiếu trả");
                    else
                        new GUIPhieuTra(THAOTAC.XEM, phieutra).Show();
                }
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button DSPhieuTra
        //----------------------------------------------------------------------
        private void rbtnDSPhieuTra_Click(object sender, EventArgs e)
        {
            if (UserManager.User != null)
            {
                BLLPhieuTra _bllPhieuTra = new BLLPhieuTra();
                DataTable data;
                if (UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.NguoiQuanTri
                    || UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.ThuThu)
                    data = _bllPhieuTra.LayDanhSachPhieuTra();
                else
                    data = _bllPhieuTra.LayPhieuTraDocGia(UserManager.User.MaDG);
                if (data == null)
                    MessageBox.Show("Không lấy được danh sách phiếu trả");
                else
                {
                    _dgwPhieuTra.DataSource = data;
                    _tabPhieuTra.Visible = true;
                    _tcpPhieuTra.Visible = true;
                    _tabContent.SelectedTab = _tabPhieuTra;
                    MessageBox.Show("Có " + data.Rows.Count.ToString() + " phiếu trả");
                }
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button XemPhieuTra
        //----------------------------------------------------------------------
        private void btnXemPhieuTra_Click(object sender, EventArgs e)
        {
            HienThiThongTinPhieuTra();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button DongPhieuTra
        //----------------------------------------------------------------------
        private void btnDongPhieuTra_Click(object sender, EventArgs e)
        {
            try
            {
                _dgwPhieuTra.Rows.Clear();
            }
            catch { }
            _tabPhieuTra.Visible = false;
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện double click cell phiếu trả 
        //----------------------------------------------------------------------
        private void dgwPhieuTra_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            HienThiThongTinPhieuTra();
        }

        //----------------------------------------------------------------------
        //Desc: chặn sự kiện xóa dòng
        //----------------------------------------------------------------------
        private void dgwPhieuTra_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
        {
            e.Cancel = true;
        }



        //----------------------------------------------------------------------
        //Desc: hiển thị thông tin phiếu mượn
        //----------------------------------------------------------------------
        public void HienThiThongTinPhieuMuon()
        {
            if (_dgwPhieuMuon.CurrentRow != null && UserManager.User != null)
            {
                string maphieumuon = "";
                try
                {
                    maphieumuon = (string)_dgwPhieuMuon.Rows[_dgwPhieuMuon.CurrentRow.Index].Cells[0].Value;
                }
                catch { }
                if (maphieumuon != "")
                {
                    BLLPhieuMuon _bllPhieuMuon = new BLLPhieuMuon();
                    DTOPhieuMuon phieumuon = _bllPhieuMuon.LayPhieuMuon(maphieumuon);
                    if (phieumuon == null)
                        MessageBox.Show("Không lấy được thông tin phiếu mượn");
                    else
                        new GUIPhieuMuon(THAOTAC.XEM, phieumuon).Show();
                }
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button DSPhieuMuon
        //----------------------------------------------------------------------
        private void rbtnDSPhieuMuon_Click(object sender, EventArgs e)
        {
            if (UserManager.User != null)
            {
                BLLPhieuMuon _bllPhieuMuon = new BLLPhieuMuon();
                DataTable data;
                if (UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.NguoiQuanTri
                    || UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.ThuThu)
                    data = _bllPhieuMuon.LayDanhSachPhieuMuon();
                else
                    data = _bllPhieuMuon.LayPhieuMuonDocGia(UserManager.User.MaDG);
                if (data == null)
                    MessageBox.Show("Không lấy được danh sách phiếu mượn");
                else
                {
                    _dgwPhieuMuon.DataSource = data;
                    _tabPhieuMuon.Visible = true;
                    _tcpPhieuMuon.Visible = true;
                    _tabContent.SelectedTab = _tabPhieuMuon;
                    MessageBox.Show("Có " + data.Rows.Count.ToString() + " phiếu mượn");
                }
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button XemPhieuMuon
        //----------------------------------------------------------------------
        private void btnXemPhieuMuon_Click(object sender, EventArgs e)
        {
            HienThiThongTinPhieuMuon();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button DongPhieuMuon
        //----------------------------------------------------------------------
        private void btnDongPhieuMuon_Click(object sender, EventArgs e)
        {
            try
            {
                _dgwPhieuMuon.Rows.Clear();
            }
            catch { }
            _tabPhieuMuon.Visible = false;
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện double click cell phiếu mượn 
        //----------------------------------------------------------------------
        private void dgwPhieuMuon_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            HienThiThongTinPhieuMuon();
        }

        //----------------------------------------------------------------------
        //Desc: chặn sự kiện xóa dòng
        //----------------------------------------------------------------------
        private void dgwPhieuMuon_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
        {
            e.Cancel = true;
        }


        private void btnSearchPhieuThu_Click(object sender, EventArgs e)
        {
            if (_txtSearchPhieuThu.TextBox.Text == "")
                MessageBox.Show("Chưa nhập thông tin tìm kiếm");
            else
            {
                string thongtin = _txtSearchPhieuThu.TextBox.Text;
                int ketqua = 0;
                for (int i = 0; i < _dgwPhieuThu.Rows.Count; i++)
                {
                    string maphieuthu = "";
                    try
                    {
                        maphieuthu = (string)_dgwPhieuThu.Rows[i].Cells[0].Value;
                    }
                    catch { }
                    if (maphieuthu != "")
                    {
                        try
                        {
                            thongtin = Utils.ClearSpace(thongtin);
                            if (maphieuthu.ToLower().Contains(thongtin.ToLower()))
                            {
                                ketqua++;
                                _dgwPhieuThu.Rows[i].Selected = true;
                            }
                        }
                        catch { }
                    }
                }

                if (ketqua == 0)
                    MessageBox.Show("Không tìm thấy mã phiếu thu");
                else
                    MessageBox.Show("Tìm thấy " + ketqua.ToString() + " phiếu thu");
            }
        }

        private void btnSearchPhieuTra_Click(object sender, EventArgs e)
        {
            if (_txtSearchPhieuTra.TextBox.Text == "")
                MessageBox.Show("Chưa nhập thông tin tìm kiếm");
            else
            {
                string thongtin = _txtSearchPhieuTra.TextBox.Text;
                int ketqua = 0;
                for (int i = 0; i < _dgwPhieuTra.Rows.Count; i++)
                {
                    string maphieutra = "";
                    try
                    {
                        maphieutra = (string)_dgwPhieuTra.Rows[i].Cells[0].Value;
                    }
                    catch { }
                    if (maphieutra != "")
                    {
                        try
                        {
                            thongtin = Utils.ClearSpace(thongtin);
                            if (maphieutra.ToLower().Contains(thongtin.ToLower()))
                            {
                                ketqua++;
                                _dgwPhieuTra.Rows[i].Selected = true;
                            }
                        }
                        catch { }
                    }
                }

                if (ketqua == 0)
                    MessageBox.Show("Không tìm thấy mã phiếu trả");
                else
                    MessageBox.Show("Tìm thấy " + ketqua.ToString() + " phiếu trả");
            }
        }

        private void btnSearchPhieuMuon_Click(object sender, EventArgs e)
        {
            if (_txtSearchPhieuMuon.TextBox.Text == "")
                MessageBox.Show("Chưa nhập thông tin tìm kiếm");
            else
            {
                string thongtin = _txtSearchPhieuMuon.TextBox.Text;
                int ketqua = 0;
                for (int i = 0; i < _dgwPhieuMuon.Rows.Count; i++)
                {
                    string maphieumuon = "";
                    try
                    {
                        maphieumuon = (string)_dgwPhieuMuon.Rows[i].Cells[0].Value;
                    }
                    catch { }
                    if (maphieumuon != "")
                    {
                        try
                        {
                            thongtin = Utils.ClearSpace(thongtin);
                            if (maphieumuon.ToLower().Contains(thongtin.ToLower()))
                            {
                                ketqua++;
                                _dgwPhieuMuon.Rows[i].Selected = true;
                            }
                        }
                        catch { }
                    }
                }

                if (ketqua == 0)
                    MessageBox.Show("Không tìm thấy mã phiếu mượn");
                else
                    MessageBox.Show("Tìm thấy " + ketqua.ToString() + " phiếu mượn");
            }
        }

        private void btnSearchPhieuNhap_Click(object sender, EventArgs e)
        {

            if (_txtSearchPhieuNhap.TextBox.Text == "")
                MessageBox.Show("Chưa nhập thông tin tìm kiếm");
            else
            {
                string thongtin = _txtSearchPhieuNhap.TextBox.Text;
                int ketqua = 0;
                for (int i = 0; i < _dgwPhieuNhap.Rows.Count; i++)
                {
                    string maphieunhap = "";
                    try
                    {
                        maphieunhap = (string)_dgwPhieuNhap.Rows[i].Cells[0].Value;
                    }
                    catch { }
                    if (maphieunhap != "")
                    {
                        try
                        {
                            thongtin = Utils.ClearSpace(thongtin);
                            if (maphieunhap.ToLower().Contains(thongtin.ToLower()))
                            {
                                ketqua++;
                                _dgwPhieuNhap.Rows[i].Selected = true;
                            }
                        }
                        catch { }
                    }
                }

                if (ketqua == 0)
                    MessageBox.Show("Không tìm thấy mã phiếu nhập");
                else
                    MessageBox.Show("Tìm thấy " + ketqua.ToString() + " phiếu nhập");
            }
        }

        #endregion

        #region THONGKE

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button TKSachTheoTL
        //----------------------------------------------------------------------
        private void rbtnTKSachMuonTheoTL_Click(object sender, EventArgs e)
        {
            if (UserManager.User != null && (UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.NguoiQuanTri
                   || UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.ThuThu))
                new GUITK_SachMuonTheoTL().Show();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button TKSachTraTre
        //----------------------------------------------------------------------
        private void rbtnTKSachTraTre_Click(object sender, EventArgs e)
        {
            if (UserManager.User != null && (UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.NguoiQuanTri
                   || UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.ThuThu))
                new GUITK_TraSachTre().Show();
        }

        #endregion

        #region QUYDINH

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button ThayDoiQD
        //----------------------------------------------------------------------
        private void rbtnThayDoiQD_Click(object sender, EventArgs e)
        {
            if (UserManager.User != null && (UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.NguoiQuanTri
                   || UserManager.User.LoaiNguoiDung == LOAI_NGUOI_DUNG.ThuThu))
                new GUIQuyDinh().Show();
        }

        #endregion

        #region MAIN

        //----------------------------------------------------------------------
        //Desc: Phân quyền cho form
        //----------------------------------------------------------------------
        public void PhanQuyen()
        {
            if (UserManager.User != null)
            {
                switch (UserManager.User.LoaiNguoiDung)
                {
                    case LOAI_NGUOI_DUNG.NguoiQuanTri:
                        _lblTenTaiKhoan.Text = UserManager.User.TaiKhoan;
                        _lblTenLoaiNguoiDung.Text = "Người quản trị";

                        _rtabHeThong.Visible = true;
                        //
                        _rbarTaiKhoan.Visible = true;
                        _rbtnDangNhap.Visible = true;
                        _rbtnDangXuat.Visible = true;
                        _rbarTaoTaiKhoan.Visible = true;
                        _rbarDoiMatKhau.Visible = true;
                        //
                        _rbarCoSoDuLieu.Visible = true;
                        //
                        _rbarPhanMem.Visible = true;
                        _rbtnThoatPhanMem.Visible = true;

                        _rtabDocGia.Visible = true;
                        //
                        _rbarDocGia.Visible = true;
                        _rbtnDSDocGia.Visible = true;
                        _rbarDocGia2.Visible = true;
                        //
                        _rbarLoaiDG.Visible = true;
                        _rbtnDSLoaiDG.Visible = true;
                        _rbtnThemLoaiDG.Visible = true;

                        _rtabSach.Visible = true;
                        //
                        _rbarSach.Visible = true;
                        _rbtnDSSach.Visible = true;
                        _rbtnTraCuuSach.Visible = true;
                        _rbarSach2.Visible = true;
                        //
                        _rbarTheLoai.Visible = true;
                        _rbtnDSTheLoai.Visible = true;
                        _rbtnThemTL.Visible = true;
                        //
                        _rbarTacGia.Visible = true;
                        _rbtnDSTacGia.Visible = true;
                        _rbtnThemTG.Visible = true;

                        _rtabMuonTra.Visible = true;
                        //
                        _rbarPhieuMuon.Visible = true;
                        _rbtnDSPhieuMuon.Visible = true;
                        _rbtnLapPhieuMuon.Visible = true;
                        //
                        _rbarPhieuTra.Visible = true;
                        _rbtnDSPhieuTra.Visible = true;
                        _rbtnLapPhieuTra.Visible = true;
                        //
                        _rbarPhieuThu.Visible = true;
                        _rbtnDSPhieuThu.Visible = true;
                        _rbtnLapPhieuThu.Visible = true;

                        _rtabThongKe.Visible = true;

                        _rtabQuyDinh.Visible = true;
                        break;

                    case LOAI_NGUOI_DUNG.ThuThu:
                        _lblTenTaiKhoan.Text = UserManager.User.TaiKhoan;
                        _lblTenLoaiNguoiDung.Text = "Thủ thư";

                        _rtabHeThong.Visible = true;
                        //
                        _rbarTaiKhoan.Visible = true;
                        _rbtnDangNhap.Visible = true;
                        _rbtnDangXuat.Visible = true;
                        _rbarTaoTaiKhoan.Visible = true;
                        _rbarDoiMatKhau.Visible = true;
                        //
                        _rbarCoSoDuLieu.Visible = false;
                        //
                        _rbarPhanMem.Visible = true;
                        _rbtnThoatPhanMem.Visible = true;

                        _rtabDocGia.Visible = true;
                        //
                        _rbarDocGia.Visible = true;
                        _rbtnDSDocGia.Visible = true;
                        _rbarDocGia2.Visible = true;
                        //
                        _rbarLoaiDG.Visible = true;
                        _rbtnDSLoaiDG.Visible = true;
                        _rbtnThemLoaiDG.Visible = true;

                        _rtabSach.Visible = true;
                        //
                        _rbarSach.Visible = true;
                        _rbtnDSSach.Visible = true;
                        _rbtnTraCuuSach.Visible = true;
                        _rbarSach2.Visible = true;
                        //
                        _rbarTheLoai.Visible = true;
                        _rbtnDSTheLoai.Visible = true;
                        _rbtnThemTL.Visible = true;
                        //
                        _rbarTacGia.Visible = true;
                        _rbtnDSTacGia.Visible = true;
                        _rbtnThemTG.Visible = true;

                        _rtabMuonTra.Visible = true;
                        //
                        _rbarPhieuMuon.Visible = true;
                        _rbtnDSPhieuMuon.Visible = true;
                        _rbtnLapPhieuMuon.Visible = true;
                        //
                        _rbarPhieuTra.Visible = true;
                        _rbtnDSPhieuTra.Visible = true;
                        _rbtnLapPhieuTra.Visible = true;
                        //
                        _rbarPhieuThu.Visible = true;
                        _rbtnDSPhieuThu.Visible = true;
                        _rbtnLapPhieuThu.Visible = true;

                        _rtabThongKe.Visible = true;

                        _rtabQuyDinh.Visible = true;
                        break;

                    case LOAI_NGUOI_DUNG.DocGia:
                        _lblTenTaiKhoan.Text = UserManager.User.TaiKhoan;
                        _lblTenLoaiNguoiDung.Text = "Độc giả";

                        _rtabHeThong.Visible = true;
                        //
                        _rbarTaiKhoan.Visible = true;
                        _rbtnDangNhap.Visible = true;
                        _rbtnDangXuat.Visible = true;
                        _rbarTaoTaiKhoan.Visible = false;
                        _rbarDoiMatKhau.Visible = true;
                        //
                        _rbarCoSoDuLieu.Visible = false;
                        //
                        _rbarPhanMem.Visible = true;
                        _rbtnThoatPhanMem.Visible = true;

                        _rtabDocGia.Visible = true;
                        //
                        _rbarDocGia.Visible = true;
                        _rbtnDSDocGia.Visible = true;
                        _rbarDocGia2.Visible = false;
                        //
                        _rbarLoaiDG.Visible = false;

                        _rtabSach.Visible = true;
                        //
                        _rbarSach.Visible = true;
                        _rbtnDSSach.Visible = true;
                        _rbtnTraCuuSach.Visible = true;
                        _rbarSach2.Visible = false;
                        //
                        _rbarTheLoai.Visible = false;
                        //
                        _rbarTacGia.Visible = false;

                        _rtabMuonTra.Visible = true;
                        //
                        _rbarPhieuMuon.Visible = true;
                        _rbtnDSPhieuMuon.Visible = true;
                        _rbtnLapPhieuMuon.Visible = false;
                        //
                        _rbarPhieuTra.Visible = true;
                        _rbtnDSPhieuTra.Visible = true;
                        _rbtnLapPhieuTra.Visible = false;
                        //
                        _rbarPhieuThu.Visible = true;
                        _rbtnDSPhieuThu.Visible = true;
                        _rbtnLapPhieuThu.Visible = false;

                        _rtabThongKe.Visible = false;
                        _rtabQuyDinh.Visible = false;

                        if (_tabLoaiDG != null)
                            _tabLoaiDG.Visible = false;
                        if (_tabTheLoai != null)
                            _tabTheLoai.Visible = false;
                        if (_tabTacGia != null)
                            _tabTacGia.Visible = false;
                        if (_tabPhieuNhap != null)
                            _tabPhieuNhap.Visible = false;

                        break;
                }
            }
            else
            {
                _lblTenTaiKhoan.Text = "Không xác định";
                _lblTenLoaiNguoiDung.Text = "Không xác định";

                _rtabHeThong.Visible = true;
                //
                _rbarTaiKhoan.Visible = true;
                _rbtnDangNhap.Visible = true;
                _rbtnDangXuat.Visible = true;
                _rbarTaoTaiKhoan.Visible = false;
                _rbarDoiMatKhau.Visible = false;
                //
                _rbarCoSoDuLieu.Visible = false;
                //
                _rbarPhanMem.Visible = true;
                _rbtnThoatPhanMem.Visible = true;

                _rtabDocGia.Visible = false;

                _rtabSach.Visible = true;
                //
                _rbarSach.Visible = true;
                _rbtnDSSach.Visible = true;
                _rbarSach2.Visible = false;
                //
                _rbarTheLoai.Visible = false;
                //
                _rbarTacGia.Visible = false;
                _rtabMuonTra.Visible = false;
                _rtabThongKe.Visible = false;
                _rtabQuyDinh.Visible = false;


                if (_tabDocGia != null)
                    _tabDocGia.Visible = false;
                if (_tabLoaiDG != null)
                    _tabLoaiDG.Visible = false;
                if (_tabTheLoai != null)
                    _tabTheLoai.Visible = false;
                if (_tabTacGia != null)
                    _tabTacGia.Visible = false;
                if (_tabPhieuMuon != null)
                    _tabPhieuMuon.Visible = false;
                if (_tabPhieuNhap != null)
                    _tabPhieuNhap.Visible = false;
                if (_tabPhieuThu != null)
                    _tabPhieuThu.Visible = false;
                if (_tabPhieuTra != null)
                    _tabPhieuTra.Visible = false;
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện form load
        //----------------------------------------------------------------------
        private void GUIMain_Load(object sender, EventArgs e)
        {
            PhanQuyen();

            _tabDocGia.Visible = false;
            _tabSach.Visible = false;
            _tabLoaiDG.Visible = false;
            _tabTheLoai.Visible = false;
            _tabTacGia.Visible = false;
            _tabPhieuThu.Visible = false;
            _tabPhieuTra.Visible = false;
            _tabPhieuMuon.Visible = false;
            _tabPhieuNhap.Visible = false;
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện key press
        //----------------------------------------------------------------------
        private void Special_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Utils.IsSpecialKey(e.KeyChar))
                e.Handled = true;
            else
                e.Handled = false;
        }

        #endregion

       
    }
}
